/*
题目：数组中数字出现的次数Ⅱ
在一个数组 nums 中除一个数字只出现一次之外，其他数字都出现了三次。请找出那个只出现一次的数字。
 */
public class SingleNumber2 {
    public int singleNumber(int[] nums) {
        int[] cnt = new int[32];
        for(int num: nums){
            for(int i = 0;num != 0;i++){
                cnt[i] += num & 1;
                num >>>= 1;
            }
        }

        int res = 0;
        for(int i = 0;i < 32;i++){
            cnt[i] %= 3;
            if(cnt[i] != 0){
                res |= (1 << i);
            }
        }
        return res;
    }
}
